import { history } from 'umi';

// 定义额外路由变量
let extraRouter

// patchRoutes: 动态添加路由
export function patchRoutes({ routes }) {
  // routes参数存放了 .umirc.ts 中注册的所有路由信息
  console.log("routes: ", routes)

  // 1.添加一个 /foo 子路由
  routes.unshift({
    path: '/foo',
    title: 'foo', //专门为该路由设置一个标题
    exact: true,
    component: require('@/pages/user1').default,
  })

  // 添加后的路由
  console.log("修改后的routes: ", routes)

  // 2.和 render 配置配合使用，合并服务端返回的路由
  extraRouter.map((item) => {
    routes.unshift({
      path: item.path,
      component: require(`@/pages${item.component}`).default,
    })
  })
}

// render: 覆写render，从服务端获取路由，会在patchRoutes配置之前执行
export function render(oldRender) {
  // 模拟从服务端请求获得的路由
  // fetch('/api/routes').then(res => res.json()).then((res)=>{
  // })

  extraRouter = [
    { path: '/server', component: '/user2' }
  ]

  // 渲染之前，做权限校验
  // const isLogin = false
  const isLogin = true
  if (!isLogin) {
    history.push('/login')
  }

  // 校验通过后，再进行渲染
  oldRender()
}

// onRouteChange：在初始加载和路由切换时做一些事情，在patchRoutes配置之后执行
export function onRouteChange({ location, routes, action, matchedRoutes }) {
  // 1.做埋点统计
  console.log(location.pathname)

  // 2.设置标题
  document.title = 'UmiJS - ' + (matchedRoutes[matchedRoutes.length - 1].route.title || '')
}
